package redis_client

import (
	"context"
	"log"
	"strconv"

	"github.com/gogf/gf/v2/frame/g"
	"github.com/redis/go-redis/v9"
)

var RedisClient *redis.Client

type RedisConfig struct {
	Addr     string `json:"addr"`
	Password string `json:"password"`
	DB       int    `json:"db"`
}

var RedisConfigDefault RedisConfig

func Init(ctx context.Context) {
	redisCfg := g.Cfg().MustGet(ctx, "redis.default").Map()
	RedisConfigDefault.Addr = redisCfg["address"].(string)
	RedisConfigDefault.Password = redisCfg["pass"].(string)
	dbStr := redisCfg["db"].(string)
	db, err := strconv.Atoi(dbStr)
	if err != nil {
		log.Fatalf("Error converting db to int: %v", err)
	}
	RedisConfigDefault.DB = db
	// Redis 客户端配置
	RedisClient = redis.NewClient(&redis.Options{
		Addr:     RedisConfigDefault.Addr,
		Password: RedisConfigDefault.Password, // 如果没有密码，可以传空字符串
		DB:       RedisConfigDefault.DB,
	})
	// 检查连接是否成功
	_, err = RedisClient.Ping(ctx).Result()
	if err != nil {
		log.Fatalf("Redis connection error: %v", err)
	}
	//g.Log().Info(ctx, "Redis client initialized successfully")
}
